---
id: ms00
title: 模块总览
sidebar_label: 0. 模块总览
---

import useBaseUrl from "@docusaurus/useBaseUrl";

系统模块是整个项目的基础，包含了系统运行时必要的组织架构与权限认证体系，可自定义的系统参数以及常用的通知公告功能。

## 组织架构
组织架构是系统组成的基础，是系统认证与授权的依据。`vben` 针对企业复杂的业务场景设计了一套非常全面的组织架构体系。有下面几个元素：

- 部门：集团、公司、机构、部门维护，支持无限多级的树形结构。
- 用户：可设置用户所属部门，担任岗位，群组，职务，角色，数据权限等。
- 岗位：岗位可作为用户的一个标签，岗位也可与权限等其他功能挂钩。
- 群组：群组可设置部门，用户，岗位，用于更广泛的权限设置。

组织架构所有表关系如下：

<img src={useBaseUrl("img/modules/sys/root/01.png")}/>

* 部门，用户，岗位，群组都会映射到 `sys_org` 这个组织架构综合表上。其他模块与这些组织架构元素关联时都是通过 `sys_org` 这个综合表的。综合表只有三个字段，可优化关联查询。
比如业务模块里经常用到的查询创建人名称，创建人部门等。

* 用户与岗位都是属于某一个特定部门的，通过depid关联。如果企业中某位领导管理了多个分散的部门，可设置多个岗位分别放到不同的部门下，再将这些岗位都关联到这个领导。

* 群组的目的是应对复杂情况的，比如用户菜单权限与业务系统里的客户权限等多个元素的权限是一个特定组合，包含了多个部门，多个用户以及特定的岗位，
则可以定义一个群组，将这些部门、用户和岗位打包，然后菜单权限与客户权限只需要与这个群组关联，就可以最终定位到某个用户拥有哪些菜单权限与客户权限了。群组不光是为权限服务的，也可以定义好群组后用于批量发送消息、通知公告等给特定的用户。

* 组织架构表主键设计成36位字符串，主要为了兼容。好多老系统的组织架构用的都是uuid，可方便组织架构同步。

## 权限管理

权限管理主要通过角色将组织架构元素与菜单和接口绑定。

关系图如下：

<img src={useBaseUrl("img/modules/sys/root/02.png")}/>

* 组织架构那里有了综合元素表，角色就可以通过它绑定到部门，用户，岗位，群组了。

* 一般系统菜单分为（目录，菜单与按钮），这里将按钮拆分出来专门当接口元素用，主要是为了移动端考虑。移动端菜单与PC端菜单不一样，但是接口权限还是一套。

* 通过上面两个表关系结构，最终目的都是要确定用户所拥有的权限集合。不用担心中间查询可能会非常复杂，系统精心设计了一套缓存体系。

## 其他说明

除了组织架构与权限管理，系统管理中的其他模块都相对比较独立，可当相应章节查看。

各模块文档里会展示表结构，都是以mysql为例的。
